package com.project.mapper;

import com.project.bean.CutPageBean;
import com.project.bean.ManBean;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

public interface IManMapper {
    /**
     * 添加公民
     * @param manBean 公民对象
     * @return 新加公民编号
     */
    public void add(ManBean manBean);

    /**
     * 添加公民集合
     * @param manList 公民集合
     */
    public void addList(@Param("list") List<ManBean> manList);

    /**
     * 删除公民
     * @param id 公民id
     */
    public void del(int id);

    /**
     * 删除多个公民
     * @param idArray 公民id数组
     */
    public void delMore(@Param("IdList") int[] idArray);

    /**
     * 按编号修改生日
     * @param id 公民编号
     * @param birthday 生日
     */
    public void update(@Param("id") int id, @Param("bir") LocalDate birthday);

    /**
     * 查询所有公民
     * @return 公民集合
     */
    public List<ManBean> findAll();

    /**
     * 按编号查询公民
     * @param id 公民id
     * @return 公民对象
     */
    public ManBean findById(int id);

    /**
     * 按姓名查询公民
     * @param name 公民姓名
     * @return 公民集合
     */
    public List<ManBean> findByName(String name);

    /**
     * 动态条件查询公民
     * @param name 公民姓名
     * @param startDate 起始生日
     * @param endDate 结束生日
     * @return 公民集合
     */
    public List<ManBean> findByItem(@Param("name") String name,
           @Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate);

    /**
     * 统计公民人数
     * @return 公民人数
     */
    public int countMan();

    /**
     * 分页查询所有记录
     * @param start 起始记录数
     * @param pageSize 每页显示记录数
     * @return 当前页显示的数据
     */
    public List<ManBean> cutAll(@Param("start") int start,@Param("pageSize") int pageSize);

    /**
     * 动态条件分页查询当前页数据
     * @param name 姓名
     * @param startDate 起始日期
     * @param endDate 结束日期
     * @param start 起始记录数
     * @param pageSize 每页显示记录数
     * @return 公民集合
     */
    public List<ManBean> cutByItem(@Param("name") String name,
             @Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate,
             @Param("start") int start,@Param("pageSize") int pageSize);

    /**
     * 按条件统计记录数
     * @param name 姓名
     * @param startDate 起始日期
     * @param endDate 结束日期
     * @return 记录数
     */
    public int countByItem(@Param("name") String name,
          @Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate);
}
